<?php

use Dingo\Api\Routing\Router;
use App\Commons\Utils\RouterActionPrefixTools;
use App\Admin\Controller\Wechat\CompanyMiniProgramController;
use App\Admin\Controller\Wechat\MiniProgramTemplateController;
use App\Admin\Controller\Wechat\MiniProgramDraftController;
use App\Admin\Controller\Wechat\MiniProgramDraftRecordController;
use App\Admin\Controller\Wechat\MiniProgramOperationRecordController;
use App\Admin\Controller\Wechat\MiniProgramWechatTemplateController;

/** @var Router $api */
$api = app(Router::class);

$api->group(['prefix' => 'wechat'], function (Router $api) {//模块前缀

    $api->group(['prefix' => 'company-mini-program'], function (Router $api) {//控制器前缀,每个控制器一个

        $rapt = new RouterActionPrefixTools(CompanyMiniProgramController::class);

        /** @see CompanyMiniProgramController::getComponentLoginPageUrl() 获取示例页面 */
        $api->get('get-component-login-page-url', $rapt->getAction('getComponentLoginPageUrl'));

        /** @see CompanyMiniProgramController::templateList() 获取示例页面 */
        $api->get('/template', $rapt->getAction('templateList'));
    });

    $api->group(['prefix' => 'mini-program-template'], function (Router $api) {//控制器前缀,每个控制器一个

        $rapt = new RouterActionPrefixTools(MiniProgramTemplateController::class);

        /** @see MiniProgramTemplateController::page() 代码模板列表 */
        $api->post('page', $rapt->getAction('page'));

        /** @see MiniProgramTemplateController::store() 新增代码模板 */
        $api->post('', $rapt->getAction('store'));

        /** @see MiniProgramTemplateController::delete() 新增代码模板 */
        $api->delete('/{id}', $rapt->getAction('delete'))->where('id', '[0-9]+');

        /** @see MiniProgramTemplateController::update() 新增代码模板 */
        $api->put('/{id}', $rapt->getAction('update'))->where('id', '[0-9]+');

        /** @see MiniProgramTemplateController::getTemplateListByAppProjectId() 根据项目类型id获取模板列表 */
        $api->get('/app-project-type/{appProjectTypeId}', $rapt->getAction('getTemplateListByAppProjectId'));

        /** @see MiniProgramTemplateController::updateDomain() 修改代码模板的服务器域名及业务域名 */
        $api->put('/{id}/domain', $rapt->getAction('updateDomain'))->where('id', '[0-9]+');

        /** @see MiniProgramTemplateController::batchPublishMiniProgram() 根据指定模板批量更新小程序 */
        $api->post('/{id}/batch-publish-mini-program', $rapt->getAction('batchPublishMiniProgram'))->where('id', '[0-9]+');

        /** @see MiniProgramTemplateController::check() 检查模板可用性 */
        $api->get('/check', $rapt->getAction('check'));

        /** @see MiniProgramTemplateController::getTemplateListForSearchFilter() 获取搜索过滤魔板列表 */
        $api->get('/get-template-list-for-search-filter', $rapt->getAction('getTemplateListForSearchFilter'));

        /** @see MiniProgramTemplateController::updateAuditItemList() 修改审核项列表 */
        $api->put('/{id}/audit-item-list', $rapt->getAction('updateAuditItemList'))->where('id', '[0-9]+');

        /** @see MiniProgramTemplateController::batchRevertMiniProgramCodeRelease() 回退该模板下小程序项目版本 */
        $api->post('/{id}/batch-revert-mini-program-code-release', $rapt->getAction('batchRevertMiniProgramCodeRelease'))->where('id', '[0-9]+')->name('回退该模板下小程序项目版本');
    });

    $api->group(['prefix' => 'mini-program-draft'], function (Router $api) {//控制器前缀,每个控制器一个

        $rapt = new RouterActionPrefixTools(MiniProgramDraftController::class);

        /** @see MiniProgramDraftController::page() 代码草稿列表 */
        $api->post('page', $rapt->getAction('page'));

        /** @see MiniProgramDraftController::miniProgramDraftToTemplate() 代码草稿添加到代码模板库 */
        $api->put('/to-template', $rapt->getAction('miniProgramDraftToTemplate'));
    });

    $api->group(['prefix' => 'mini-program-draft-record'], function (Router $api) {//控制器前缀,每个控制器一个

        $rapt = new RouterActionPrefixTools(MiniProgramDraftRecordController::class);

        /** @see MiniProgramDraftRecordController::page() 代码草稿日志列表 */
        $api->post('page', $rapt->getAction('page'));
    });

    $api->group(['prefix' => 'mini-program-operation-record'], function (Router $api) {//控制器前缀,每个控制器一个

        $rapt = new RouterActionPrefixTools(MiniProgramOperationRecordController::class);

        /** @see MiniProgramOperationRecordController::page() 小程序操作记录列表 */
        $api->post('page', $rapt->getAction('page'));
    });

    $api->group(['prefix' => 'mini-program-wechat-template'], function (Router $api) {//控制器前缀,每个控制器一个

        $rapt = new RouterActionPrefixTools(MiniProgramWechatTemplateController::class);

        /** @see MiniProgramWechatTemplateController::page() 微信代码模板分页列表 */
        $api->post('page', $rapt->getAction('page'));

        /** @see MiniProgramWechatTemplateController::delete() 删除微信代码模板 */
        $api->delete('/{id}', $rapt->getAction('delete'));
    });

});